package prjtgl.metier.paiement;

import java.io.Serializable;
import java.util.List;
import javax.persistence.*;
import prjtgl.bdd.paiement.HPorteMonnaie;

/**
 * Porte monnaie
 *
 * @author Lucie
 */
@Entity
@Table(name = "porte_monnaie")
public class PorteMonnaie implements Serializable {

	private long id;
	/**
	 * Credits restants
	 */
	private Integer credit;
	/**
	 * Paiements effectues
	 */
	private List<Paiement> paiements;

	/**
	 * Recharger un nombre donne de credits
	 *
	 * @param montant Nombre de credits
	 */
	public void recharger(Integer montant) {
		credit += montant;
	}

	/**
	 * Effectuer un paiement
	 */
	public void payer() {
		this.credit--;
	}

	/**
	 * Retourne l'ID BDD
	 *
	 * @return ID BDD
	 */
	@Id
	@Column(name = "id")
	public long getId() {
		return id;
	}

	/**
	 * Mutateur de l'ID BDD
	 *
	 * @param id ID BDD
	 */
	public void setId(long id) {
		this.id = id;
	}

	/**
	 * Retourne le credit du porte monnaie
	 *
	 * @return Credit
	 */
	@Column(name = "credit")
	public Integer getCredit() {
		return credit;
	}

	/**
	 * Mutateur du credit du porte monnaie
	 *
	 * @param credit Nouveau credit
	 */
	public void setCredit(Integer credit) {
		this.credit = credit;
	}

	/**
	 * Retourne les paiements effectues
	 *
	 * @return Liste des paiements
	 */
	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "porteMonnaie")
	public List<Paiement> getPaiements() {
		return paiements;
	}

	/**
	 * Mutateur des paiements effectues
	 *
	 * @param paiements Nouvelle liste des paiements
	 */
	public void setPaiements(List<Paiement> paiements) {
		this.paiements = paiements;
	}

	public void updatePorteMonnaie() {
		HPorteMonnaie hp = new HPorteMonnaie();
		hp.enregistrer(this);

	}
}
